// 引入 dotenv 来加载环境变量
require('dotenv').config();
const mongoose = require('mongoose');

var createError = require("http-errors")
var express = require("express")
var path = require("path")
var cookieParser = require("cookie-parser")
var logger = require("morgan")
var cors = require("cors")
var indexRouter = require("./routes/index")
var usersRouter = require("./routes/users")
const userController = require('./userController');
const User = require('./models/User');

// 连接数据库
mongoose.connect("mongodb://127.0.0.1:27017/zhihuiyun", {
  useNewUrlParser: true,
  useUnifiedTopology: true
})
.then(() => {
  console.log("数据库连接成功");
})
.catch((err) => {
  console.error("数据库连接失败:", err);
});

var app = express()
app.use(cors())
// view engine setup
app.set("views", path.join(__dirname, "views"))
app.set("view engine", "jade")

app.use(logger("dev"))
app.use(express.json())
app.use(express.urlencoded({ extended: false }))
app.use(cookieParser())
app.use(express.static(path.join(__dirname, "public")))
app.use("/upload", express.static(path.join(__dirname, "upload")))

app.use("/", indexRouter)
app.use("/users", usersRouter)

// catch 404 and forward to error handler
app.use(function (req, res, next) {
  next(createError(404))
})

// error handler
app.use(function (err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message
  res.locals.error = req.app.get("env") === "development" ? err : {}

  // render the error page
  res.status(err.status || 500)
  res.render("error")
})

// 使用用户相关路由，只保留一次
app.use('/api', userController);

// 导出 app 实例供其他文件使用
module.exports = app;
